package com.qst.survey.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qst.survey.entity.Question;
import com.qst.survey.vo.BarVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**

 * @Description: 投票服务类
 */
public interface QuestionService {
    /**
     * @param question ：投票
     * @param file ：文件封面
     * @description  TODO 添加一个图片
     * @return java.lang.Integer
     * @date 2021/4/2
    */
    Integer addQuestion(Question question, MultipartFile file);
    /**
     * @param page ：分类类
     * @param type ：类型
     * @description  TODO 根据类型来查出数据
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.qst.survey.entity.Question>
     * @author IsAriel~~     * @date 2021/4/2
    */
    Page<Question> queryByType(Page page, int type);
    /**
     * @param page：分页类
     * @param userId ：用户id
     * @description  TODO  根据用户id来查出所有的文件分页
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.qst.survey.entity.Question>
     * @date 2021/4/2
    */
    Page<Question> queryByUserId(Page page, int userId);
    /**
     * @param id ：用户id
     * @description  TODO    通过用户id来查出所有的该用户的投票
     * @return java.util.List<com.qst.survey.entity.Question>
     * @date 2021/4/2
    */
    List<Question> queryListById(Integer id);
    /**
     * @param id  ：投票id
     * @description  TODO 通过投票id来删除投票
     * @return java.util.List<com.qst.survey.entity.Question>
     * @date 2021/4/2
    */
    List<Question> queryDeleteListById(Integer id);
    /**
     * @param page ：分页类
     * @description  TODO  分页查出投票数据
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.qst.survey.entity.Question>
     * @date 2021/4/2
    */
    Page<Question> queryAll(Page page);
    /**
     * @param questionId ：投票id
     * @description  TODO   通过投票id来查出所有问题
     * @return com.qst.survey.entity.Question
     * @date 2021/4/2
    */
    Question findAllTopics(Integer questionId);
    /**
     * @param questionId ：投票id
     * @description  TODO   通过投票id来删除投票
     * @return java.lang.Integer
     * @date 2021/4/2
    */
    Integer deleteOneQuestion(Integer questionId);
    /**
     * @param questionId 投票id
     * @description  TODO   通过投票id来恢复一投票
     * @return java.lang.Integer
     * @date 2021/4/2
    */
    Integer restoreOneQuestion(Integer questionId);
    /**
     * @param id ：投票id
     * @description  TODO 通过投票id来查出一个投票
     * @return com.qst.survey.entity.Question
     * @date 2021/4/2
    */
    Question findQuestionById(int id);
    /**
     * @param question：投票类
     * @description  TODO   更新一个投票的信息
     * @return boolean
     * @date 2021/4/2
    */
    boolean editQuestion(Question question);
    /**
     * @param id ：投票id
     * @description  TODO 删除一个投票
     * @return boolean
     * @date 2021/4/2
    */
    boolean removeQuestion(int id);
    /**
     * @param paperId  通过一个
     * @description  TODO   通过一个id来查出数据
     * @return java.util.List
     * @date 2021/4/2
    */
    List findAllData(Integer paperId);
    /**
     * @param Theme ：投票标题
     * @description  TODO   通过投票名来查询投票
     * @return java.util.List<com.qst.survey.entity.Question>
     * @date 2021/4/2
    */
    List<Question> findQuestionByTheme(String Theme);
    /**
     * @param page ：分页类
     * @description  TODO 通过分页类来查投票分页数据
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page
     * @date 2021/4/2
    */
    Page findAllTemplate(Page page);
    /**
     * @param page ：分页类
     * @param type ：投票类型
     * @description  TODO 通过类型来查出投票来
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page
     * @date 2021/4/2
    */
    Page findTypeTemplate(Page page, int type);
    /**
     * @param id ：模板id
     * @param userId ：用户id
     * @description  TODO 创建一个投票模板
     * @return int
     * @date 2021/4/2
    */
    int createTemplate(Integer id,Integer userId);
    /**
     * @param id ：投票id
     * @description  TODO 通过投票id来增加答题数
     * @date 2021/4/2
    */
    void addCount(int id);
    /**
     * @description  TODO 获得折线图数据
     * @return com.qst.survey.vo.BarVO
     * @date 2021/4/4
    */
    BarVO getQueCountLine();
    /**
     * @description  TODO 投票热度加1
     * @return boolean
     * @date 2021/4/4
     */
    boolean addHeatDegree(Integer id);
    /**
     * @description  TODO 创建一个模板投票
     * @return boolean
     * @date 2021/4/4
     */
    boolean setTemplate(Question question);
    /**
     * @param page ：分页类
     * @description  TODO  分页查出所有的投票(已经结束,和没有结束)
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.qst.survey.entity.Question>
     * @date 2021/4/2
     */
    Page findAllQu(Page page);
    /**
     * @param page ：分页类
     * @description  TODO  通过类别分页查出所有的投票(已经结束,和没有结束)
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.qst.survey.entity.Question>
     * @date 2021/4/2
     */
    Page findByTypeALL(Page page, int type);
}
